/**************************************************************************************************************/ /********************************** FUNÇÕES DE REDIRECIONAMENTO DE PÁGINAS ************************************/ /**************************************************************************************************************/ var intervalCookie; /* / DESCRICAO: inicia o loading panel / ESCOPO: página / DEPENDENCIAS: BlockUI / PARAMETROS: */ function iniciarLoading(elemento) { if ($('.tooltip').length) { $('.tooltip').tooltip('hide'); } if (elemento) { elemento.block({ baseZ: '99999999', message: '
Aguarde...
', fadeIn: 0, overlayCSS: { backgroundColor: '#fff', opacity: 0.6, cursor: 'wait', padding: '30px' }, css: { width: '250px', height: '70px' } }); } else { $.blockUI({ baseZ: '99999999', message: '
Aguarde...
', css: { width: '250px', height: '70px', left: '50%', margin: 'auto auto auto -125px', backgroundColor: '#fff' } }); } } /* / DESCRICAO: habilita o aviso de quando o usuário tenta sair da página sem finalizar o procedimento */ function habilitarAvisoLoading() { $(window).on('beforeunload', function (e) { var prm = Sys.WebForms.PageRequestManager.getInstance(); if (!prm._processingRequest) { return 'Deseja sair deste site?'; } }); } function habilitarAvisoFormulario(mensagem) { $(window).on('beforeunload', function (e) { return mensagem; }); } /* / DESCRICAO: finalizar o loading panel / ESCOPO: página / DEPENDENCIAS: BlockUI / PARAMETROS: */ function finalizarLoading(args, elemento, url) { var finalizar = true; if (args) { var requestError = args.get_error(); if (requestError && requestError.name == 'Sys.WebForms.PageRequestManagerTimeoutException') { finalizar = false; window.location = url; } } if (finalizar) { if (elemento) { elemento.unblock(); } else { $.unblockUI(); } } } /* / DESCRICAO: desabilitar o aviso de quando o usuário tenta sair da página sem finalizar o procedimento */ function desabilitarAvisoLoading() { $(window).unbind('beforeunload'); } ///Inicia o loading panel que irá durar enquanto o cookie não estiver expirado function iniciarLoadingDownload() { createCookie("cookieDownload", 1); intervalCookie = setInterval(checarTerminoLoadingDownload, 1000); iniciarLoading(); } ///Checa se o cookie expirou, caso tenha expirado finaliza o loading panel function checarTerminoLoadingDownload() { if (readCookie("cookieDownload") == null) { finalizarLoading(); clearInterval(intervalCookie); } } /* / DESCRICAO: chama a URL na própria página / ESCOPO: página / DEPENDENCIAS: nenhuma / PARAMETROS: URL - String com a URL a ser chamada */ function chamaURL(URL) { window.location = URL; } /* / DESCRICAO: chama a URL na página pai / ESCOPO: página / DEPENDENCIAS: nenhuma / PARAMETROS: URL - String com a URL a ser chamada */ function chamaURL_NoPai(URL) { window.opener.location = URL; window.blur(); window.opener.focus(); } /* / DESCRICAO: abre uma URL em uma nova página, verificando se a mesma foi bloqueada / ESCOPO: página / DEPENDENCIAS: nenhuma / PARAMETROS: URL - String com a URL a ser chamada / NOME - String com o nome da janela / FEATURES (OPCIONAL) - Caso o usuário faça uma chamada passando só dois parâmetros / um valor padrão é atribuido */ function chamaURL_NovaPagina(theURL, winName, features) { var popUp; if ((typeof features == "undefined") || (features == null)) { features = 'width=945, height=650, resizable=yes, scrollbars=yes'; } popUp = window.open(theURL, winName, features); verificarBloqueador(popUp); return popUp; } /* / DESCRICAO: verifica se o pop-up foi bloqueado / ESCOPO: página / DEPENDENCIAS: nenhuma / PARAMETROS: POPUP - Instancia do popup que será verificado */ function verificarBloqueador(popUp) { if ((typeof popUp == "undefined") || (popUp == null)) { alert("A tela para digitação do texto da mensagem abre em forma de 'POPUP'. Portanto, para continuar, é necessário que desabilite, no seu navegador, para o site da PUC, o bloqueador de 'POPUPS'."); } } /**************************************************************************************************************/ /*********************** FUNÇÕES PARA CONTROLE E FORMATAÇÃO DA MODAL DE ALERT E CONFIRM ***********************/ /**************************************************************************************************************/ /* / DESCRICAO: exibe o alert modal nas aplicações / ESCOPO: página / DEPENDENCIAS: nenhuma / PARAMETROS: titulo - titulo do Modal / tipo - tipo da mensagem (sucesso, erro ou aviso) que define o css de formatação / msg - texto da mensagem */ function exibirAlertModal(titulo, tipo, msg) { document.getElementById("pnlAlertModalBody").className = "modal-body pnlAlertModalTipo" + tipo; document.getElementById("lblAlertModal").innerHTML = htmlDecode(msg); document.getElementById("lblTituloAlert").innerHTML = titulo; var footer = document.getElementById("pnlAlertModalFooter"); while (footer.firstChild) { footer.removeChild(footer.firstChild); } adicionarBotao(footer, "Ok", "btn-ok"); //Exibe o conteúdo no modal $('#pnlDialogAlert').on('shown.bs.modal', function (e) { $('#pnlDialogAlert button[data-dismiss=modal]').focus(); }).modal({ show: true, backdrop: 'static', keyboard: false }); } /* / DESCRICAO: exibe o alert modal nas aplicações e redireciona para a url / ESCOPO: página / DEPENDENCIAS: nenhuma / PARAMETROS: titulo - titulo do Modal / tipo - tipo da mensagem (sucesso, erro ou aviso) que define o css de formatação / msg - texto da mensagem / URL - url para redirecionamento */ function exibirAlertModalRedirect(titulo, tipo, msg, URL) { document.getElementById("pnlAlertModalBody").className = "modal-body pnlAlertModalTipo" + tipo; document.getElementById("lblAlertModal").innerHTML = msg; document.getElementById("lblTituloAlert").innerHTML = titulo; var footer = document.getElementById("pnlAlertModalFooter"); while (footer.firstChild) { footer.removeChild(footer.firstChild); } adicionarBotao(footer, "Ok", "btn-ok", function (e) { chamaURL(URL); }); //Exibe o conteúdo no modal $('#pnlDialogAlert').on('shown.bs.modal', function (e) { $('#pnlDialogAlert button[data-dismiss=modal]').focus(); }).modal({ show: true, backdrop: 'static', keyboard: false }); } /* / DESCRICAO: exibe o confirm modal nas aplicações / ESCOPO: página / DEPENDENCIAS: nenhuma / PARAMETROS: titulo - titulo do Modal / msg - texto da mensagem / URL - url para redirecionamento em caso de "Sim" */ function exibirConfirmModal(titulo, msg, URL) { document.getElementById("pnlConfirmModalBody").className = "modal-body pnlConfirmModalTipoConfirm"; document.getElementById("lblConfirmModal").innerHTML = htmlDecode(msg); document.getElementById("lblTituloConfirm").innerHTML = titulo; var footer = document.getElementById("pnlConfirmModalFooter"); while (footer.firstChild) { footer.removeChild(footer.firstChild); } adicionarBotao(footer, "Não", "btn-nao", function (e) { $('#pnlDialogConfirm').modal("hide"); e.preventDefault(); }); adicionarBotao(footer, "Sim", "btn-sim", function (e) { eval(URL); }); setTimeout(() => { $('#pnlDialogConfirm').on('shown.bs.modal').modal({ show: true, backdrop: 'static', keyboard: false }); }, 500); } /* / DESCRICAO: adiciona um elemento de botão no elemento pai recebido por parâmetro / ESCOPO: página / DEPENDENCIAS: nenhuma / PARAMETROS: pai - elemento pai ao qual o botão será adicionado / texto - texto do botão / acaoClique - ação a ser executada caso o usuário clique no botão */ function adicionarBotao(pai, texto, classe, acaoClique) { var btnNovo = document.createElement("BUTTON"); var $btnNovo = $(btnNovo); $btnNovo.addClass("btn btn-default " + classe); $btnNovo.attr("type", "button"); $btnNovo.attr("data-dismiss", "modal"); $btnNovo.text(texto); if (acaoClique) { $btnNovo.on("click", acaoClique); } pai.appendChild(btnNovo); } /* / DESCRICAO: troca o foco do formulário / ESCOPO: página / DEPENDENCIAS: nenhuma / PARAMETROS: field - campo sendo preenchido */ function autotab(field) { if (field.value.length == field.maxLength) { $(":input:eq(" + parseInt($(":input").index(field) + 1) + ")").focus(); } } /* / DESCRICAO: obtém um parâmetro passado na URL / ESCOPO: página / DEPENDENCIAS: nenhuma / PARAMETROS: parameter - parâmetro a ser obtido */ function getParametroUrl(parameter) { var loc = location.search.substring(1, location.search.length); var param_value = false; var params = loc.split("&"); for (i = 0; i < params.length; i++) { param_name = params[i].substring(0, params[i].indexOf('=')); if (param_name == parameter) { param_value = params[i].substring(params[i].indexOf('=') + 1) } } if (param_value) { return param_value; } else { return false; } } /* / DESCRICAO: Controla o abrir e fechar do panel "pnlExpande" / ESCOPO: página */ $(document).ready(function () { /* Painéis de Expansão */ $(".pnlExpandeTitulo").click(function () { $(this).next().toggleClass('esconde'); $(this).children('.pnlIcoExpandeFecha,.pnlIcoExpandeAbre').toggleClass('pnlIcoExpandeFecha pnlIcoExpandeAbre'); }); var $options = { // Delay de 0,5 segundos para abrir o tooltip e fechamento imediato delay: { show: 500, hide: 0 }, container: "body", selector: '[data-toggle=tooltip], .has-error input, .has-error select, .has-error .icoValidaErro, .has-error .RadComboBox, .has-error textarea', trigger: 'hover' } $(".panel-sau").on("focusin focusout", setPanelSauAtivo); $('body').tooltip($options); $('#lblDepartamentosUsuario').on('click', function () { $('#lblDepartamentosUsuario').tooltip('toggle'); }); $('#lblDepartamentosUsuario').on('shown.bs.tooltip', function () { $(document).on('click', fechaTooltipDepto); }); $('#lblDepartamentosUsuario').on('hidden.bs.tooltip', function () { $(document).off('click', fechaTooltipDepto); }); $(document).on('shown.bs.modal', '.modal', function (e) { if ($('object:visible', this).length > 0 && $('object:visible', this)[0].contentWindow && !$('object:visible', this)[0].contentWindow.jQuery) { $('object', this).get(0).contentWindow.print(); } //Garante que ao abrir uma modal os controle atrás da modal não poderão ser clicados através do botão 'TAB'. $('body input, body button, body a').each(function (i) { if ($(this).attr('tabindex') == -1) { //Os elementos que já estiverem com tab desabilidado não serão manipulados. //A classe TabIndexDisabled serve como marcador para identificar estes elementos. $(this).addClass("TabIndexDisabled"); } else { $(this).attr('tabindex', -1); } }); //Garante que pode navegar pelos controles na modal $(this).find("input, button, a").each(function (i) { $(this).attr('tabindex', i + 1); }); }); $(document).on('hidden.bs.modal', '.modal', function (e) { //Garante que ao fechar a modal o usuário possa navegar pelos controles usando o botão 'TAB'. $('body input, body button, body a').each(function (i) { if ($(this).hasClass("TabIndexDisabled")) { $(this).removeClass("TabIndexDisabled"); } else { $(this).attr('tabindex', i + 1); } }); // Todas as modais que estiverem visiveis deverão receber a classe css modal-open. // Isso se faz necessário pois ao aplicar o hidden em uma modal, todas as demais modais abertas, erroneamente, são afetadas pela remoção da classe css modal-open. $('.modal:visible').length && $(document.body).addClass('modal-open'); }); $(document).on('click', '.rbtn_sau', function () { radioButtonParentSelection(); }); }); function fechaTooltipDepto() { $('#lblDepartamentosUsuario').tooltip('hide'); } /* / DESCRICAO: Evento usado na RADDROPDOWNTREE de forma a impedir que selecione elementos com filhos / ESCOPO: página / DEPENDENCIAS: / PARAMETROS: */ function OnClientEntryAdding(sender, args) { var RadTree = args.get_entry().get_parent().get_embeddedTree(); qtdFilhos = RadTree.findNodeByValue(args.get_entry().get_value()).get_nodes().get_count(); if (qtdFilhos > 0) args.set_cancel(true); } /* / DESCRICAO: Evento usado na RADDROPDOWNTREE de forma a impedir que selecione elementos sem pai / ESCOPO: página / DEPENDENCIAS: / PARAMETROS: */ function OnClientEntryAddingSemSelecaoDeRoot(sender, args) { var RadTree2 = args.get_entry().get_parent().get_embeddedTree(); var nodeParent = RadTree2.findNodeByValue(args.get_entry().get_value()).get_parent().get_parent(); if (!nodeParent) args.set_cancel(true); } /** * Remove acentos de caracteres * @param {String} stringComAcento [string que contem os acentos] * @return {String} [string sem acentos] */ function removerAcentos(palavra) { var palavraSemAcento = ""; var caracterComAcento = "áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ"; var caracterSemAcento = "aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC"; for (var i = 0; i < palavra.length; i++) { var char = palavra.substr(i, 1); var indexAcento = caracterComAcento.indexOf(char); if (indexAcento != -1) { palavraSemAcento += caracterSemAcento.substr(indexAcento, 1); } else { palavraSemAcento += char; } } return palavraSemAcento; } //Métodos Para Manipulação de Cookies function createCookie(name, value, days, domain) { if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); var expires = "; expires=" + date.toGMTString(); } else var expires = ""; if (domain) { var domainCookie = "; domain=" + domain; } document.cookie = name + "=" + value + domainCookie + expires + "; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; } function eraseCookie(name, domain) { createCookie(name, "", -1, domain); } function limparCookieIsolamentoSessao() { eraseCookie('IdentificadorSessao', '.puc-rio.br'); } function setPanelSauAtivo() { $(this).toggleClass("panel-sau-ativo", $(this).find(':focus').length); } function radioButtonParentSelection() { $(".rbtn_sau input:not(:checked)").parent().removeClass("rbtnSelecionado"); $(".rbtn_sau input:checked").parent().addClass("rbtnSelecionado"); } function postIdentificadorSessao() { __doPostBack('form1', ''); } function adicionarControleDuplicacaoAba() { sessionStorage.setItem("checkTabDuplicada", "foo"); } function verificarControleDuplicacaoAba(urlMenuPai) { var bar = sessionStorage.getItem("checkTabDuplicada"); if (!bar) { var formPagina = document.forms[0]; if (formPagina != null) formPagina.style.display = "none"; chamaURL(urlMenuPai); } } function prevenir_Enter_keypress(event) { if (event.which == 13) { if ($(this).attr('type') === 'submit') { event.preventDefault(); $(this).click(); } else { event.preventDefault(); } } } function htmlDecode(input) { var e = document.createElement('textarea'); e.innerHTML = input; // handle case of empty input return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue; }